
#ifndef SCREEN_TURBOSHAPEPAINT_H
#define SCREEN_TURBOSHAPEPAINT_H

#include "turboshape.h"

class Line : public TurboShape
{
public:
    Line();
    void paint(QPainter &painter) override;

    void pushLinePoint(const QPoint &point);

private:
    QVector<QPoint> line_points_;
};

class Rect : public TurboShape
{
public:
    Rect();
    void paint(QPainter &painter);
};

class Ellipse : public TurboShape
{
public:
    Ellipse();
    void paint(QPainter &painter);
};

class Arrow : public TurboShape
{
public:
    Arrow();
    void paint(QPainter &painter);
    void pushLinePoint(const QPoint &point);

private:
    QVector<QPoint> line_points_;
};

class Mosaic : public TurboShape
{
public:
    Mosaic();
    void paint(QPainter &painter);

    void pushLinePoint(const QPoint &point) override;
    void setMosaic(const QPixmap &map) override;
    QPixmap getMosaic() override;

private:
    QPixmap mosaic_map_;
    QVector<QPoint> line_points_;
};
#endif //SCREEN_TURBOSHAPEPAINT_H
